package pe.edu.unmsm.fisi.ceiecbt.app.utiles;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JasperReport;




/**
 * Genera los reportes con Jasper Reports.
 *
 */
public class Reporter {
    /**
     * Ejecuta el reporte jasper especificado, volc�ndolo como archivo al ServletOutputStream del response.
     * El jasper se busca en el directorio ireports.
     *
     * @param type tipo de exportaci�n; puede ser pdf, xls, html, csv
     * @param jasper nombre del jasper para el report; debe estar en el directorio ireports
     * @param parameters par�metros para el jasper
     * @param list java bean que contiene los datos
     * @param fileName nombre del archivo resultado de la exportaci�n
     * @param request
     * @param response
     * @throws JRException
     * @throws IOException
     */
    public void exportReport(String strA_rutaFile, Map parameters,List list, File objA_file) throws JRException, IOException {
    //public void exportReport(String strA_rutaFile, Map parameters,com.aasa.pruebas.reportes.ParticipantesDatasource datasource, File objA_file) throws JRException, IOException {
        JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(list);
        
        String jasperFilename = strA_rutaFile;//request.getSession().getServletContext().getRealPath(File.separator +"ireports"+File.separator + jasper);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFilename,parameters, datasource);
        //JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFilename,parameters, datasource);
        FileOutputStream outputStream = new FileOutputStream(objA_file);        
        JRExporter exporter;       
        exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outputStream);
        exporter.exportReport();   
        outputStream.flush();
        outputStream.close();     
    }
}
